<template>
  <view>
    <button open-type="getUserInfo" @getuserinfo="getUserBtn" type="primary">微信登录</button>
  </view>
</template>

<script>
  export default {
    onLoad () {
      this.getUserData();
    },
    methods: {
      // 登录
      // 前端获取微信账户信息请求后端接口
      // 后端拿着前端的账户信息和微信通信，拿到token和user_id
      async login (userInfo) {
        // 获取后台登录接口需要的参数
        /**
         * 需要的参数
         * 1.code用户凭证
         * 2.微信用户的账号信息
         */
        const [error, code] = await uni.login();
        console.log('code', error, code, userInfo);
        const {encryptedData, iv, rawData, signature} = userInfo;
        // 调用接口
        const res = await this.request({
          url: '/api/public/v1/users/wxlogin',
          method: 'POST',
          data: {
            code:code.code,
            encryptedData, iv, rawData, signature
          },
          header: {
            'custom-header': 'hello' //自定义请求头信息
          },
          success: (res) => {
            console.log(res.data);
            this.text = 'request success';
          }
        });
        console.log('登录',res);
        // 登录成功
        if (status === 200) {
          // 存储token
          uni.setStorage({
            key: 'hm_token',
            data: data.token,
          })
          // 返回结算页
          uni.navigateBack()
        } else {
          uni.showToast({
            title: msg,
            duration: 2000
          })
        }
        
      },

      // 通过btn的形式获取用户信息-推荐
      getUserBtn (res) {
        console.log('btn', res);
        this.login(res.detail);
      },

      // 通过api的形式获取用户信息-废弃
      // 获取微信账号信息,需要用户手动授权
      // wx.getUserInfo()接口废弃，不会弹出授权窗口，默认授权失败
      // 微信官方推荐组件的方式获取-button的open-type="getUserInfo"
      async getUserData () {
        // uni.getUserInfo({
        //   success: res => {
        //     console.log('api', res);
            
        //   },
        //   fail: res => {
        //     console.log('error', res);
        //   }
        // });

        // 获取用户授权的数据
        let [err, set] = await uni.getSetting();
        console.log('set', err, set);
        if (!err && set.authSetting['scope.userInfo']) {
          // 已经获取用户授权
          let [error, userData] = await uni.getUserInfo();
          console.log('api', error, userData);
          if (!error) {
            console.log(userData);
            
          }
        }

        
      }
    }
  }
</script>

<style lang="scss" scoped>
  button {
    width: 600rpx;
    margin: 200rpx auto 0;
  }
</style>